From a8a755e5cddc0f1736cc198301088310a6e26627 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Timm=20B=C3=A4der?= Date: Wed, 9 Aug 2017 16:26:26 +0200 Subject: [PATCH] widget: Remove gtk_widget_set_redraw_on_alloc Since gtk+ draws more than the widget and allocates more size to it than it knows about, this flag doesn't work anymore. Removing it (or setting it to TRUE for widgets that used to set it to FALSE) fixes drawing invalidation when these widgets get allocated a new size. --- docs/reference/gtk/gtk4-sections.txt | 1 - gtk/gtkbox.c | 1 - gtk/gtkflowbox.c | 2 -- gtk/gtkgrid.c | 1 - gtk/gtkheaderbar.c | 1 - gtk/gtkinfobar.c | 2 -- gtk/gtklistbox.c | 2 -- gtk/gtkpathbar.c | 1 - gtk/gtkrevealer.c | 1 - gtk/gtkstatusbar.c | 1 - gtk/gtktextview.c | 3 --- gtk/gtktoolitemgroup.c | 1 - gtk/gtktreeview.c | 1 - gtk/gtkviewport.c | 1 - gtk/gtkwidget.c | 35 +--------------------------- gtk/gtkwidget.h | 4 ---- gtk/gtkwidgetprivate.h | 1 - 17 files changed, 1 insertion(+), 58 deletions(-) diff --git a/docs/reference/gtk/gtk4-sections.txt b/docs/reference/gtk/gtk4-sections.txt index 7f21939c7b..8df123c8b9 100644 --- a/docs/reference/gtk/gtk4-sections.txt +++ b/docs/reference/gtk/gtk4-sections.txt @@ -4547,7 +4547,6 @@ gtk_widget_get_font_map gtk_widget_create_pango_layout gtk_widget_queue_draw_area gtk_widget_queue_draw_region -gtk_widget_set_redraw_on_allocate gtk_widget_mnemonic_activate gtk_widget_send_focus_change gtk_widget_class_set_accessible_type diff --git a/gtk/gtkbox.c b/gtk/gtkbox.c index 194c98ba04..45111edb5f 100644 --- a/gtk/gtkbox.c +++ b/gtk/gtkbox.c @@ -1351,7 +1351,6 @@ gtk_box_init (GtkBox *box) private = box->priv; gtk_widget_set_has_window (GTK_WIDGET (box), FALSE); - gtk_widget_set_redraw_on_allocate (GTK_WIDGET (box), FALSE); private->orientation = GTK_ORIENTATION_HORIZONTAL; private->children = NULL; diff --git a/gtk/gtkflowbox.c b/gtk/gtkflowbox.c index dde07b7d84..0119f460fd 100644 --- a/gtk/gtkflowbox.c +++ b/gtk/gtkflowbox.c @@ -474,7 +474,6 @@ static void gtk_flow_box_child_init (GtkFlowBoxChild *child) { gtk_widget_set_can_focus (GTK_WIDGET (child), TRUE); - gtk_widget_set_redraw_on_allocate (GTK_WIDGET (child), TRUE); } /* Public API {{{2 */ @@ -3755,7 +3754,6 @@ gtk_flow_box_init (GtkFlowBox *box) GtkFlowBoxPrivate *priv = BOX_PRIV (box); gtk_widget_set_has_window (GTK_WIDGET (box), FALSE); - gtk_widget_set_redraw_on_allocate (GTK_WIDGET (box), TRUE); priv->orientation = GTK_ORIENTATION_HORIZONTAL; priv->selection_mode = GTK_SELECTION_SINGLE; diff --git a/gtk/gtkgrid.c b/gtk/gtkgrid.c index fbd7814a51..73ae2eb5ff 100644 --- a/gtk/gtkgrid.c +++ b/gtk/gtkgrid.c @@ -1727,7 +1727,6 @@ gtk_grid_init (GtkGrid *grid) priv = grid->priv; gtk_widget_set_has_window (GTK_WIDGET (grid), FALSE); - gtk_widget_set_redraw_on_allocate (GTK_WIDGET (grid), FALSE); priv->children = NULL; priv->orientation = GTK_ORIENTATION_HORIZONTAL; diff --git a/gtk/gtkheaderbar.c b/gtk/gtkheaderbar.c index e463da47db..5b8ca74abd 100644 --- a/gtk/gtkheaderbar.c +++ b/gtk/gtkheaderbar.c @@ -1986,7 +1986,6 @@ gtk_header_bar_init (GtkHeaderBar *bar) priv = gtk_header_bar_get_instance_private (bar); gtk_widget_set_has_window (GTK_WIDGET (bar), FALSE); - gtk_widget_set_redraw_on_allocate (GTK_WIDGET (bar), FALSE); priv->title = NULL; priv->subtitle = NULL; diff --git a/gtk/gtkinfobar.c b/gtk/gtkinfobar.c index 5f29c06993..6fb798ae88 100644 --- a/gtk/gtkinfobar.c +++ b/gtk/gtkinfobar.c @@ -428,8 +428,6 @@ gtk_info_bar_init (GtkInfoBar *info_bar) priv = info_bar->priv = gtk_info_bar_get_instance_private (info_bar); - gtk_widget_set_redraw_on_allocate (widget, TRUE); - /* message-type is a CONSTRUCT property, so we init to a value * different from its default to trigger its property setter * during construction */ diff --git a/gtk/gtklistbox.c b/gtk/gtklistbox.c index c19e01b6ad..6e73276b42 100644 --- a/gtk/gtklistbox.c +++ b/gtk/gtklistbox.c @@ -592,7 +592,6 @@ gtk_list_box_init (GtkListBox *box) GtkWidget *widget = GTK_WIDGET (box); gtk_widget_set_has_window (widget, FALSE); - gtk_widget_set_redraw_on_allocate (widget, TRUE); priv->selection_mode = GTK_SELECTION_SINGLE; priv->activate_single_click = TRUE; @@ -3468,7 +3467,6 @@ static void gtk_list_box_row_init (GtkListBoxRow *row) { gtk_widget_set_can_focus (GTK_WIDGET (row), TRUE); - gtk_widget_set_redraw_on_allocate (GTK_WIDGET (row), TRUE); ROW_PRIV (row)->activatable = TRUE; ROW_PRIV (row)->selectable = TRUE; diff --git a/gtk/gtkpathbar.c b/gtk/gtkpathbar.c index 3775505b70..4e3c37fc2f 100644 --- a/gtk/gtkpathbar.c +++ b/gtk/gtkpathbar.c @@ -195,7 +195,6 @@ gtk_path_bar_init (GtkPathBar *path_bar) G_CALLBACK (gtk_path_bar_scroll_down), path_bar); gtk_widget_set_has_window (GTK_WIDGET (path_bar), FALSE); - gtk_widget_set_redraw_on_allocate (GTK_WIDGET (path_bar), FALSE); context = gtk_widget_get_style_context (GTK_WIDGET (path_bar)); gtk_style_context_add_class (context, "path-bar"); diff --git a/gtk/gtkrevealer.c b/gtk/gtkrevealer.c index 05a4132ab2..4aeffd88a4 100644 --- a/gtk/gtkrevealer.c +++ b/gtk/gtkrevealer.c @@ -124,7 +124,6 @@ gtk_revealer_init (GtkRevealer *revealer) priv->target_pos = 0.0; gtk_widget_set_has_window ((GtkWidget*) revealer, FALSE); - gtk_widget_set_redraw_on_allocate ((GtkWidget*) revealer, FALSE); } static void diff --git a/gtk/gtkstatusbar.c b/gtk/gtkstatusbar.c index 9ffca74435..56bf58ff39 100644 --- a/gtk/gtkstatusbar.c +++ b/gtk/gtkstatusbar.c @@ -237,7 +237,6 @@ gtk_statusbar_init (GtkStatusbar *statusbar) priv->keys = NULL; gtk_widget_init_template (GTK_WIDGET (statusbar)); - gtk_widget_set_redraw_on_allocate (GTK_WIDGET (statusbar), TRUE); } /** diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c index 6a52445826..4212e6d9e1 100644 --- a/gtk/gtktextview.c +++ b/gtk/gtktextview.c @@ -1713,9 +1713,6 @@ gtk_text_view_init (GtkTextView *text_view) priv->text_window = text_window_new (GTK_TEXT_WINDOW_TEXT, widget, 200, 200); - /* We handle all our own redrawing */ - gtk_widget_set_redraw_on_allocate (widget, FALSE); - priv->multipress_gesture = gtk_gesture_multi_press_new (widget); gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (priv->multipress_gesture), 0); g_signal_connect (priv->multipress_gesture, "pressed", diff --git a/gtk/gtktoolitemgroup.c b/gtk/gtktoolitemgroup.c index 962e7e7e0a..2dd49f9251 100644 --- a/gtk/gtktoolitemgroup.c +++ b/gtk/gtktoolitemgroup.c @@ -385,7 +385,6 @@ gtk_tool_item_group_init (GtkToolItemGroup *group) GtkToolItemGroupPrivate* priv; GtkCssNode *widget_node; - gtk_widget_set_redraw_on_allocate (GTK_WIDGET (group), FALSE); gtk_widget_set_has_window (GTK_WIDGET (group), FALSE); group->priv = priv = gtk_tool_item_group_get_instance_private (group); diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c index 1ac489b14b..b43f5fb9ad 100644 --- a/gtk/gtktreeview.c +++ b/gtk/gtktreeview.c @@ -1670,7 +1670,6 @@ gtk_tree_view_init (GtkTreeView *tree_view) priv = tree_view->priv = gtk_tree_view_get_instance_private (tree_view); gtk_widget_set_can_focus (GTK_WIDGET (tree_view), TRUE); - gtk_widget_set_redraw_on_allocate (GTK_WIDGET (tree_view), FALSE); priv->show_expanders = TRUE; priv->draw_keyfocus = TRUE; diff --git a/gtk/gtkviewport.c b/gtk/gtkviewport.c index 54ff2b1f48..870f358981 100644 --- a/gtk/gtkviewport.c +++ b/gtk/gtkviewport.c @@ -343,7 +343,6 @@ gtk_viewport_init (GtkViewport *viewport) widget = GTK_WIDGET (viewport); gtk_widget_set_has_window (widget, FALSE); - gtk_widget_set_redraw_on_allocate (widget, FALSE); priv->shadow_type = GTK_SHADOW_IN; priv->hadjustment = NULL; diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index 3f72a7edc4..ba3ce24261 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -3798,7 +3798,6 @@ gtk_widget_init (GTypeInstance *instance, gpointer g_class) priv->allocated_size_baseline = -1; priv->sensitive = TRUE; - priv->redraw_on_alloc = TRUE; priv->alloc_needed = TRUE; priv->alloc_needed_on_child = TRUE; priv->focus_on_click = TRUE; @@ -5566,7 +5565,7 @@ check_clip: position_changed |= (old_clip.x != priv->clip.x || old_clip.y != priv->clip.y); - if (_gtk_widget_get_mapped (widget) && priv->redraw_on_alloc) + if (_gtk_widget_get_mapped (widget)) { if (position_changed || size_changed || baseline_changed) { @@ -8172,38 +8171,6 @@ gtk_widget_get_mapped (GtkWidget *widget) return widget->priv->mapped; } -/** - * gtk_widget_set_redraw_on_allocate: - * @widget: a #GtkWidget - * @redraw_on_allocate: if %TRUE, the entire widget will be redrawn - * when it is allocated to a new size. Otherwise, only the - * new portion of the widget will be redrawn. - * - * Sets whether the entire widget is queued for drawing when its size - * allocation changes. By default, this setting is %TRUE and - * the entire widget is redrawn on every size change. If your widget - * leaves the upper left unchanged when made bigger, turning this - * setting off will improve performance. - - * Note that for widgets where gtk_widget_get_has_window() is %FALSE - * setting this flag to %FALSE turns off all allocation on resizing: - * the widget will not even redraw if its position changes; this is to - * allow containers that don’t draw anything to avoid excess - * invalidations. If you set this flag on a widget with no window that - * does draw on @widget->window, you are - * responsible for invalidating both the old and new allocation of the - * widget when the widget is moved and responsible for invalidating - * regions newly when the widget increases size. - **/ -void -gtk_widget_set_redraw_on_allocate (GtkWidget *widget, - gboolean redraw_on_allocate) -{ - g_return_if_fail (GTK_IS_WIDGET (widget)); - - widget->priv->redraw_on_alloc = redraw_on_allocate; -} - /** * gtk_widget_set_sensitive: * @widget: a #GtkWidget diff --git a/gtk/gtkwidget.h b/gtk/gtkwidget.h index dea23f10e1..ff2aa771ba 100644 --- a/gtk/gtkwidget.h +++ b/gtk/gtkwidget.h @@ -701,10 +701,6 @@ gboolean gtk_widget_get_realized (GtkWidget *widget); GDK_AVAILABLE_IN_ALL gboolean gtk_widget_get_mapped (GtkWidget *widget); -GDK_AVAILABLE_IN_ALL -void gtk_widget_set_redraw_on_allocate (GtkWidget *widget, - gboolean redraw_on_allocate); - GDK_AVAILABLE_IN_ALL void gtk_widget_set_parent (GtkWidget *widget, GtkWidget *parent); diff --git a/gtk/gtkwidgetprivate.h b/gtk/gtkwidgetprivate.h index 86b020f6ae..79d6437042 100644 --- a/gtk/gtkwidgetprivate.h +++ b/gtk/gtkwidgetprivate.h @@ -66,7 +66,6 @@ struct _GtkWidgetPrivate guint receives_default : 1; guint has_grab : 1; guint shadowed : 1; - guint redraw_on_alloc : 1; guint child_visible : 1; guint multidevice : 1; guint has_shape_mask : 1; -- 2.30.2